package day8;

import java.util.Scanner;

//继承
//狗类 继承 宠物类Pet
public class Dog  extends  Pet{
    String type;//品种 假设这是狗自己独有的属性
    public void print(){
        System.out.println("狗的基本信息：");
        System.out.println("狗的姓名："+this.name);
        System.out.println("狗的友好值："+love);
        System.out.println("狗的健康值："+health);
        System.out.println("品种："+type);

    }
    public void eat(){
        System.out.println("吃骨头");

    }
}
//猫类  继承了 父类Pet类  只能有一个直接父类(单继承)
class Cat extends Pet{
    String color;//颜色  假设这是猫自己独有的属性
    String name;
    public void test(){
        String name="";
        System.out.println(name); //局部变量
        System.out.println(this.name);//自己成员变量
        System.out.println(super.name);//父类成员变量
    }
    public void print(){
        System.out.println("猫的基本信息：");
        System.out.println("猫的姓名："+this.name);
        System.out.println("猫的友好值："+love);
        System.out.println("猫的健康值："+health);
        System.out.println("颜色"+color);

    }
    public void eat(){
         System.out.println("吃鱼");

    }
}
//父类:编写子类共同特征(属性和方法)  但是可以多重继承
abstract class Pet{
    String name;
    int love=69;//友好度
    int health=100;//健康值
    public void print(){}
    public void eat(){}
}

class TestPet{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入宠物姓名：");
        String name=sc.next();
        System.out.print("请输入宠物类型（1.猫  2.狗）:");
        int n=sc.nextInt();
        Pet p=null;
        switch (n){
            case 2:
                p=new Dog();
                System.out.print("请输入品种：");
                String type=sc.next();
                ((Dog)p).type= type;
                break;
            case 1:
                p=new Cat();
                System.out.print("请输入颜色：");
                String color=sc.next();
                ((Cat)p).color= color;
                break;
        }
        p.name=name;
        p.print();
        p.eat();
    }
}
